// exports.AL_Framework_Framework = void 0;
// var $assetManager = require("./AL_Framework_AssetManager");
// var $bundleManager = require("./AL_Framework_Bundle_Manager");
// var $cacheManager = require("./AL_Framework_Cache_Manager");
// var $releaseManager = require("./AL_Framework_Release_Manager");
// var $audioManager = require("./AL_Framework_AudioManager");
// var $eventCenter = require("./AL_Framework_Event_Center");
// var $languageMgr = require("./AL_Framework_Language_Mgr");
// var d = (require("./AL_Framework_Lobby_Manager"), require("./AL_Framework_Logger"));
// var $httpClient = require("./HttpClient");
// var $nodePoolManager = require("./AL_Framework_Node_Pool_Manager");
// var $localManager = require("./AL_Framework_Local_Manager");
// var $popupManager = require("./AL_Framework_Popup_Manager");
// var $uIManager = require("./AL_Framework_UI_Manager");
// var $updateManager = require("./AL_Framework_Update_Manager");
// var $utils = require("./AL_Framework_Utils");
// var _ = (function () {
//     function e() {}
//     Object.defineProperty(e.prototype, "logger", {
//         get: function () {
//             return getSingleton(d.LoggerImpl);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "assetManager", {
//         get: function () {
//             return getSingleton($assetManager.AssetManager);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "cacheManager", {
//         get: function () {
//             return getSingleton($cacheManager.AL_Framework_Cache_Manager);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "bundleManager", {
//         get: function () {
//             return getSingleton($bundleManager.AL_Framework_Bundle_Manager);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "releaseManager", {
//         get: function () {
//             return getSingleton($releaseManager.AL_Framework_Release_Manager);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "uiManager", {
//         get: function () {
//             return getSingleton($uIManager.AL_Framework_UI_Manager);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "nodePoolManager", {
//         get: function () {
//             return getSingleton($nodePoolManager.AL_Framework_Node_Pool_Manager);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "eventCenter", {
//         get: function () {
//             return getSingleton($eventCenter.AL_Framework_Event_Center);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "localManager", {
//         get: function () {
//             return getSingleton($localManager.default);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "audioManager", {
//         get: function () {
//             return getSingleton($audioManager.default);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "languageManager", {
//         get: function () {
//             return getSingleton($languageMgr.default);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "popupManager", {
//         get: function () {
//             return getSingleton($popupManager.default);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "updateManager", {
//         get: function () {
//             return getSingleton($updateManager.AL_Framework_Update_Manager);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "http", {
//         get: function () {
//             return getSingleton($httpClient.HttpClient);
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "utils", {
//         get: function () {
//             return $utils.AL_Framework_Utils;
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     Object.defineProperty(e.prototype, "lobbyManager", {
//         get: function () {
//             return null;
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     e.prototype.enter = function () {};
//     return e;
// })();
// exports.AL_Framework_Framework = _;


// 导入各个模块的管理器
const $assetManager = require("./AL_Framework_AssetManager");
const $bundleManager = require("./AL_Framework_Bundle_Manager");
const $cacheManager = require("./AL_Framework_Cache_Manager");
const $releaseManager = require("./AL_Framework_Release_Manager");
const $audioManager = require("./AL_Framework_AudioManager");
const $eventCenter = require("./AL_Framework_Event_Center");
const $languageMgr = require("./AL_Framework_Language_Mgr");
const AL_Framework_Logger = require("./AL_Framework_Logger").LoggerImpl;
// const $httpClient = require("./HttpClient");
const $nodePoolManager = require("./AL_Framework_Node_Pool_Manager");
const $localManager = require("./AL_Framework_Local_Manager");
const $popupManager = require("./AL_Framework_Popup_Manager");
const $uIManager = require("./AL_Framework_UI_Manager");
//const $updateManager = require("./AL_Framework_Update_Manager");
const $utils = require("./AL_Framework_Utils");

// 获取单例对象的通用函数
function getSingleton(ClassType) {
    if (!ClassType._instance) {
        ClassType._instance = new ClassType();
    }
    return ClassType._instance;
}

/**
 * Framework类，管理各个模块的单例对象
 */
class AL_Framework_Framework {
    /**
     * 获取日志管理器的单例对象
     * @returns {LoggerImpl} 日志管理器的实例
     */
    get logger() {
        return getSingleton(AL_Framework_Logger);
    }

    /**
     * 获取资源管理器的单例对象
     * @returns {AssetManager} 资源管理器的实例
     */
    get assetManager() {
        return getSingleton($assetManager.AssetManager);
    }

    /**
     * 获取缓存管理器的单例对象
     * @returns {AL_Framework_Cache_Manager} 缓存管理器的实例
     */
    get cacheManager() {
        return getSingleton($cacheManager.AL_Framework_Cache_Manager);
    }

    /**
     * 获取包管理器的单例对象
     * @returns {AL_Framework_Bundle_Manager} 包管理器的实例
     */
    get bundleManager() {
        return getSingleton($bundleManager.AL_Framework_Bundle_Manager);
    }

    /**
     * 获取释放管理器的单例对象
     * @returns {AL_Framework_Release_Manager} 释放管理器的实例
     */
    get releaseManager() {
        return getSingleton($releaseManager.AL_Framework_Release_Manager);
    }

    /**
     * 获取UI管理器的单例对象
     * @returns {AL_Framework_UI_Manager} UI管理器的实例
     */
    get uiManager() {
        return getSingleton($uIManager.AL_Framework_UI_Manager);
    }

    /**
     * 获取节点池管理器的单例对象
     * @returns {AL_Framework_Node_Pool_Manager} 节点池管理器的实例
     */
    get nodePoolManager() {
        return getSingleton($nodePoolManager.AL_Framework_Node_Pool_Manager);
    }

    /**
     * 获取事件中心的单例对象
     * @returns {AL_Framework_Event_Center} 事件中心的实例
     */
    get eventCenter() {
        return getSingleton($eventCenter.AL_Framework_Event_Center);
    }

    /**
     * 获取本地管理器的单例对象
     * @returns {AL_Framework_Local_Manager} 本地管理器的实例
     */
    get localManager() {
        return getSingleton($localManager.default);
    }

    /**
     * 获取音频管理器的单例对象
     * @returns {AL_Framework_AudioManager} 音频管理器的实例
     */
    get audioManager() {
        return getSingleton($audioManager.default);
    }

    /**
     * 获取语言管理器的单例对象
     * @returns {LanguageManager} 语言管理器的实例
     */
    get languageManager() {
        return getSingleton($languageMgr.default);
    }

    /**
     * 获取弹出管理器的单例对象
     * @returns {AL_Framework_Popup_Manager} 弹出管理器的实例
     */
    get popupManager() {
        return getSingleton($popupManager.default);
    }

    /**
     * 获取更新管理器的单例对象
     * @returns {AL_Framework_Update_Manager} 更新管理器的实例
     */
    get updateManager() {
        //return getSingleton($updateManager.AL_Framework_Update_Manager);
    }

    // /**
    //  * 获取HTTP客户端的单例对象
    //  * @returns {HttpClient} HTTP客户端的实例
    //  */
    // get http() {
    //     return getSingleton($httpClient.HttpClient);
    // }

    /**
     * 获取工具类
     * @returns {AL_Framework_Utils} 工具类
     */
    get utils() {
        return $utils.AL_Framework_Utils;
    }

    /**
     * 获取大厅管理器的单例对象，目前返回null
     * @returns {null} 大厅管理器的实例（目前为null）
     */
    get lobbyManager() {
        return null;
    }

    /**
     * Framework进入函数
     */
    enter() {}
}

exports.AL_Framework_Framework = AL_Framework_Framework;
